package com.zhiliao.common.captcha;

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/**
 * Description: google kaptcha 配置
 *
 * @author qirong
 * @create 2018-10-26
 */
@Configuration
public class CaptchaConfiguration {

    @Bean
    public DefaultKaptcha getCaptchaProducer(@Value("${kcaptcha.img.width}") String imgWidth, @Value("${kcaptcha.img.hight}") String imgHight, @Value("${kcaptcha.font.size}")  String fontSize,
                                             @Value("${kcaptcha.font.color}") String fontColor, @Value("${kcaptcha.char.length}") String charLength) {

        DefaultKaptcha kcaptcha = new DefaultKaptcha();
        Properties prop= new Properties();
        /* 是否有边框 可选yes 或者 no */
        prop.setProperty(Constants.KAPTCHA_BORDER, "no");
        /* 验证码文本字符颜色 */
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, fontColor);
        /* 验证码图片的宽度 */
        prop.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, imgWidth);
        /* 验证码图片的高度 */
        prop.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, imgHight);
        /* 验证码文本字符大小 */
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, fontSize);
        /* 验证码文本字符长度 */
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, charLength);
        /* 验证码文本字符间距 */
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "4");
        /* 验证码文本字体样式 */
        prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES,"宋体,楷体,微软雅黑");
        prop.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL,"com.google.code.kaptcha.impl.ShadowGimpy");
        prop.setProperty(Constants.KAPTCHA_NOISE_COLOR,"green");
        prop.setProperty(Constants.KAPTCHA_NOISE_IMPL,"com.google.code.kaptcha.impl.NoNoise");
        /*prop.setProperty(Constants.KAPTCHA_TEXTPRODUCER_IMPL,"com.zhiliao.common.captcha.ChineseTextProducer");*/
        Config cfg = new Config(prop);
        kcaptcha.setConfig(cfg);
        return kcaptcha;

    }

}
